User programmable devices, such as PLDs and FPGAs, have been known for decades. These devices, which are useful for fast prototyping, emulation, and reconfigurable systems, are used predominantly for digital circuits and constructed by a plurality of logic cells at the gate level. The cells are connected with one another through user-programmable interconnections.
One of the applications of programmable devices is circuit emulation. Devices such as FPGAs can emulate the behavior of a digital circuit at a speed that is tens or hundreds times faster than that of digital logic simulation software. Circuit emulation plays a vital role in verifying the functionality of large digital systems. An emulation system using PLDs or FPGAs emulates digital circuits, as described, for example, in U.S. Pat. No. 7,356,454, U.S. Pat. No. 6,842,729, and U.S. Pat. No. 7,348,827.
Unlike digital circuits, whose operations are based on a limited number of logic values (e.g., 0, 1), analog circuits operate based on voltages and currents, and each of these quantities may have any of an infinite number of values at any given time. Analog circuits can have digital or analog inputs and outputs but the internal signals contain analog signals. Digital signals can also reside within the analog circuit. A “mixed mode circuit” contains both analog and digital circuit blocks.
In the analog domain, most analog circuits are custom designed. Analog designs are typically verified with a circuit simulation software, such as a SPICE simulator. Analog circuit simulation is much slower than digital circuit simulation, and there has been no significant advancement in analog circuit design technique and circuit simulation technology over the past 30 years. The custom circuit design processes often require many re-design cycles for circuit verification and optimization. Once a mistake is made and corrected, a new verification cycle has to be performed through wafer fabrication, package substrate fabrication, assembly operation, and design verification, the combination of which could take months to complete. If multiple redesigns occur and a verification cycle is completed for each redesign, the iterations can take years to complete. Due to the slow speed of circuit simulation, many analog and mixed mode circuit designs either take too long to design or enter the manufacturing phase without being fully verified or optimized. As a result, there are more missed market opportunities, circuit functional failures, or losses of product yield than there should be.
Prior efforts in programmable analog circuits focused on using predefined analog function blocks connected through programmable interconnection networks. The predefined analog function blocks can be operational amplifier, comparator, analog-to-digital converter, digital-to-analog converter, voltage reference, filter and others. These circuits can provide programmability and controllability of analog circuits for specific applications with pre-defined analog building blocks. Examples that reflect this type of effort are presented in U.S. Pat. No. 7,280,058, U.S. Pat. No. 6,910,126, U.S. Pat. No. 6,724,220, U.S. Pat. No. 6,910,126, U.S. Pat. No. 6,728,666, U.S. Pat. No. 6,424,209, U.S. Pat. No. 5,677,691, U.S. Pat. No. 5,563,526. None of these references describe a user-programmable analog circuit emulation system. For example, some of these references may solve the connectivity issue of the fully programmable analog circuit without addressing the programmability of circuit element characteristics.
A problem with user-programmable analog circuit using predefined analog function blocks is that it is not suitable for circuit emulation since the circuit can not match arbitrary circuit element characteristic and circuit topology. Furthermore, this type of circuit is intended to run circuit at-speed, which usually means the circuit runs at too high of a speed to measure circuit behavior accurately. Also, the high resistance values in switches interfere with accurate analog circuit emulation. In more detail, a fully programmable analog circuit uses a network of switches to connect the circuit elements. A MOS transistor requires three switches (at its drain, gate and source terminals) and sometimes additional switches to connect to other transistors (see U.S. Patent Application No. 2006/0261846 and U.S. Pat. No. 6,728,666). Most switches used in existing programmable digital and analog circuits are of minimum channel length and width to minimize parasitic effect and area usage. However, such switches have high resistance values. While the high resistance values may be acceptable in digital circuit emulation since digital circuit emulation mainly emulates logic “0” and “1” state, they will greatly affect the functionality of analog circuit emulation since an analog circuit operation requires higher precision and accuracy.
For the above reasons, there is currently an unfulfilled need for a fully user-programmable analog and mixed mode circuit and an analog and mixed mode circuit emulation system.